
#include "utility.h"

int stringToint(string str){
    int rpos = str.find("\r");
    int ret;
    stringstream ss;
    ss<<str.substr(0, rpos);
    ss>>ret;
    return ret;
}
float stringToFloat(string str){
    int rpos = str.find("\r");
    float ret;
    stringstream ss;
    ss<<str.substr(0, rpos);
    ss>>ret;
    return ret;
}

string concatToString(const char types[], ...){
    stringstream ss;
    va_list Args;
    va_start(Args, types);

    for(int i=0; types[i]!=0; i++){
        union uArgValue {
         int     i;
         float   f;
         char    c;
         char   *s;
      } ArgValue;

      switch( types[i] ) {   // Type to expect.
         case 'i':
            ArgValue.i = va_arg( Args, int );
            ss << ArgValue.i;
         break;
         case 'f':
            ArgValue.f = va_arg( Args, double );
            ss << ArgValue.f;
         break;
         case 'c':
            ArgValue.c = (char) va_arg( Args, int );
            ss << ArgValue.c;
         break;
         case 's':
            ArgValue.s = va_arg( Args, char * );
            ss << ArgValue.s;
         break;
         default:
         break;
      }
    }
    va_end(Args);
    return ss.str();
}

